// 导入combineReducers方法，将各个reducer模块整合成一个根reducer模块
import { combineReducers } from 'redux'

// 导入各个子reducer模块
import collection from './reducers/collection'
import shopcart from './reducers/shopcart'

// 调用方法合并子模块，并抛出
export default combineReducers ({
    // 存储数据名：存储的数据
    collections: collection,
    shopcarts: shopcart
})





// 创建一个纯函数，
// 纯函数就是代码中不能有副作用代码，副作用代码就是不确定性代码；比如：发送请求，定时器，事件监听，new Date(),Math.random()

// 初始状态
// let data = {
//     count:1,
//     arr:[],
//     obj:{},
//     bool:false,
// }

// 有两个参数：
// 第一个：初始的状态；state = data ; 
// 第二个触发action动作 类型 以及 参数: action = { type : '', payload:null} ; 是一个对象
// function reducer (state = data,action={type:'',payload:null}){

// 注意：state数据发生变化，就必须返回新的state数据；没有变化，就返回旧的state数据
// 所以先将state进行深拷贝
// let newState = JSON.parse(JSON.stringify(state))

    // 再对触发action的类型进行判断，根据action的类型执行不同的操作来修改state

    // if(action.type == 'ADD'){
    //     // "ADD"类型对应代码逻辑
    //     newState.count += action.payload
    //     // 将改变的新数据返回
    //     return newState
    // }else if ( action.type == 'DELETE'){
    //     // "DELETE"类型对应的代码逻辑
    //     newState.count -= action.payload
    //     // 将改变的新的数据返回
    //     return newState
    // }else{
    //     // 如果state数据没有发生变化，则返回旧数据
    //     return state
    // }

    //switch写法与if写法效果相同
    
    // switch( action.type ){
    //     case 'ADD' :
    //         console.log('hhh');
    //         newState.count += action.payload
    //         return newState;
    //     case 'DELETE' :
    //         newState.count -= action.payload
    //         return newState;
    //     default : return state
    // }

    //必须返回新的state  ( 如果触发了action,则一定意为着state会被修改, 如果没有触发action, 则state一定不会被修改 )
    //return newstate;
    //return state;

// }

// 导出纯函数
// export default reducer